package ycl.scheduled.common.utils;

import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

/**
 * 基本数据类型工具
 *
 * @author: YCL
 * @date: 2021-09-01 16:03:51
 */
@SuppressWarnings("all")
public class BaseDataTypeUtil {

	/**
	 * 从集合里获取这个元素
	 *
	 * @param o    目标元素
	 * @param list 集合里是否包含这个元素
	 * @param t    类型
	 * @param <T>  转换成需要的类
	 * @return 将这个目标转换成需要的类
	 */
	public static <T> T getValueForColl(Object o, List<T> list, Class<T> t) {
		return getValueForColl(o, list, t, false);
	}


	/**
	 * 从集合里获取这个元素
	 *
	 * @param o    目标元素
	 * @param list 集合里是否包含这个元素
	 * @param t    类型
	 * @param <T>  转换成需要的类
	 * @param thr  要不要抛异常
	 * @return 将这个目标转换成需要的类
	 */
	public static <T> T getValueForColl(Object o, List<T> list, Class<T> t, boolean thr) {
		if (CollUtil.isEmpty(list))
			return null;

		boolean exc = false;
		try {
			T obj = JSONObject.parseObject(o.toString(), t);
			for (T r : list)
				if (obj.equals(r))
					return obj;
		} catch (NumberFormatException ignored) {
			if (thr)
				exc = true;
		}
		if (exc)
			throw new IllegalArgumentException("传入对象与集合的类型不匹配");
		return null;
	}
}
